package cn.lyjuan.archetypes.bms.web.util;

import org.springframework.util.StringUtils;

/**
 * Created by chad on 2017/1/12.
 */
public class NumberUtils
{
    /**
     * 判断一个字符串是否是数字
     *
     * @param str
     * @return
     */
    public static boolean isNumber(Object str)
    {
        return str != null && str.toString().matches("^-?[0-9]+$");
    }

    /**
     * 判断一个对象转换为字符串是否为一定长度范围内的数字
     *
     * @param str 字符串
     * @return 如果该对象转换的字符串为数字，并长度在一定范围内，则返回 true，否则 false
     */
    public static boolean isNumLen(Object str, int min, int max, boolean isTrim)
    {
        if (StringUtils.isEmpty(str)) return false;

        if (str.toString().replace(" ", "").matches("^-?[\\d]{" + min + "," + max + "}$"))
            return true;

        return false;
    }

    /**
     * 判断一个字符串是否定长的字符
     *
     * @param str
     * @param len
     * @return
     */
    public static boolean isNumber(Object str, int len)
    {
        return str != null && str.toString().matches("^-?[0-9]{" + len + "}$");
    }

    /**
     * 判断对象是否是数字 double 类型，没有小数点的数字也是 double 类型
     *
     * @param obj
     * @return 如果是 double 类型，返回true，否则返回 false
     */
    public static boolean isDouble(String obj)
    {
        return !StringUtils.isEmpty(obj) && obj.matches("(^[0-9]+\\.[0-9]+|([0-9]+$))");
    }
}
